home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / music / bassv25.zip / BASS.DOC next >
Text File  |  1992-04-16  |  24KB  |  569 lines

  1. Package:
  2. ========
  3.       BASS version 2.5 Copyright (c) Andrew Kay, April 1992
  4.  
  5.      (*for changes since previous version, see end of document*)
  6.  
  7. What it does:
  8. =============
  9. BASS is a program to produce a bass line, percussion and chords
  10. against which you  can jam. There are several uses for this kind of
  11. thing, for example,
  12.     @ type in a chord sequence to practise improvising with
  13.         (a rhythm section which doesn't get bored)
  14.     @ try out your song ideas, quickly
  15.     @ listen to chord changes which you can't play yourself
  16.     @ home Karaoke player !
  17.     @ produce midi files to import into your sequencer
  18.  
  19. Requirements:
  20. =============
  21. BASS requires
  22.     @ a PC compatible computer (there may be timing problems on
  23.      older, slower machines).
  24.     @ an MPU 401 compatible MIDI interface card at the standard port
  25.      addresses (The IRQ number can be reconfigured if necessary)
  26.     @ a MIDI synthesiser to hook it up to.
  27. Note that if you use BASS to produce midifiles, then you only need
  28. a PC compatible, without an MPU.
  29.  
  30. In addition, you need a text editor to enter the sequences. I didn't
  31. include one in the program because I knew you already had an editor,
  32. and didn't want to learn a new one.
  33.  
  34. Contents:
  35. =========
  36.     bass.exe     -- executable
  37.     bass.doc     -- documentation
  38.     bass.rc      -- sample startup file
  39.     *.bss     -- sample sequences
  40.  
  41. The package is distributed in archived form. Please redistribute in
  42. this form.
  43.  
  44. Author:
  45. =======
  46.     Andrew Kay (email to Andrew.Kay@prg.oxford.ac.uk for the moment)
  47.  
  48. Shareware:
  49. ==========
  50. This product must not be sold or resold for profit, other than the
  51. registration fee due to the author. The author retains copyright on
  52. all copies of all versions. The package may be freely distributed, so
  53. long as it remains unmodified and intact, and that the copyright and
  54. shareware notice remains unaltered. The author makes no claims about
  55. the suitability of this software for any particular machine or
  56. purpose. Use it at your own risk.
  57.  
  58. If you like this product, please show your appreciation by sending 10
  59. pounds sterling (or more!) with your name, address, (email address),
  60. preferred disk format, stating where you found your copy of BASS,
  61. and which version you have, to
  62.  
  63.     Andrew Kay
  64.     17 Kenton Park Avenue,
  65.     Kenton, Harrow, HA3 8DU
  66.     United Kingdom
  67.  
  68. Acknowledgment:
  69. ===============
  70. The code was written using Borland's Turbo C 2.0 and Turbo Debugger
  71. (copyright (C) Borland) with reference to the Voyetra OP-4000/1
  72. technical reference manual. I would like to thank Dave Favis-Mortlock
  73. (of Jupiter Computer Consultants) for encouragement and numerous
  74. suggestions.
  75.  
  76.                              ===========
  77.                              QUICK START
  78.                              ===========
  79.  
  80. First unpack all the files in the archive. I have assumed that your
  81. MPU interface is set to IRQ 2. If not, use a text editor to set the
  82. IRQ number in the file bass.rc (following the \irq line). See the
  83. section on \irq below if you need more help on this. If you get the
  84. wrong IRQ number you will hear either nothing or random noises.
  85.  
  86. Make sure your synthesiser is switched on and set to recieve midi
  87. data. select a bass sound on channel 1 and a honky tonk piano on
  88. channel 2. From the directory with BASS in it type
  89.  
  90.                             bass stlouis
  91.  
  92. Within a few seconds you should see the chords and hear the rhythm
  93. section for this jolly number. Percussion sounds require a little more
  94. preparation (since I don't know exactly how your synthesiser maps
  95. percussion sounds to note numbers. BASS _can_ do percussion ! See the
  96. section on \setperc below)
  97.  
  98. If you see and hear nothing, then you may need to reconfigure the IRQ,
  99. or perhaps your card is incompatible or in a strange state. If the
  100. last of these is the case then you will need to power down and reboot
  101. the system. If you see the chords but hear nothing, then the problem
  102. is most likely between the MPU and your ears, a path which includes
  103. the MIDI OUT cable, the synth (check the channels and that MIDI is
  104. being received) and the amplifier.
  105.  
  106. ======
  107. Usage:
  108. ======
  109.     BASS [-s] [-n] [-c] [-h<hum>] [-f<midifile>]
  110.             [-q<cuetime>] [<filename>]
  111.  
  112. BASS takes commands from the file bass.rc in the current directory,
  113. if one exists, and then from the file specified by <filename>. If the
  114. file is not found, <filename>.bss is tried instead. The commands are
  115. used to produce `live' music via the MPU MIDI interface, or a standard
  116. MIDI file (type 0) with the -f option.
  117.  
  118.   -s    read input from standard input, rather than filename
  119.  
  120.   -n    don't read the bass.rc file
  121.  
  122.   -c    print out a list (on standard output) of all the chord types
  123.      recognised by BASS, and then terminate. Each chord type is shown
  124.      as it would appear in the key of C, together with the list of
  125.      actual notes it would contain in that key. If you have defined
  126.      new chords (using \chord, see below), they will appear in the
  127.      table.
  128.  
  129.   -h<hum>
  130.     This option is the `humaniser' -- it allows a certain random
  131.      element to be brought into the performance, both in volume and
  132.      timing. hum is an integer from 0 (no effect) to 10 (maximum
  133.      effect). The default is 0.
  134.  
  135.    -f<midifile>
  136.     With this option BASS writes a MIDI format 0 file. Note that
  137.      there is no space between the -f and the file name. You must
  138.      include the file extension (usually .mid) if required.
  139.  
  140.   -q<cuetime>
  141.     This option controls the printing of lyrics and chord names.
  142.      Cuetime can be from 0 to 4, and represents the number of beats
  143.      in advance when the lyric or chord is printed. For a cuetime of
  144.      0 (the default), the playing and printing is (almost) simul-
  145.      taneous. If you want to use the screen as a cue, it can be
  146.      helpful to know in advance which chords and lyrics are coming up.
  147.  
  148. =========
  149. Controls:
  150. =========
  151. You can make the music faster or slower with the up and down arrow
  152. keys. The brackets [ and ] make the music less or more `swingy' (see
  153. \swing, below). ESC (or space) to stop. Question mark (?) prints
  154. current tempo and swing settings. Any other non-function key prints
  155. a brief help list.
  156.  
  157. ========
  158. Details:
  159. ========
  160. Commands are stored in the file bass.rc, and in the file specified on
  161. the command line. They should be created with the text editor of your
  162. choice, and stored in ASCII format. Commands in the specified file
  163. override commands in the bass.rc file.
  164.  
  165. There are several different commands, all starting with '\'. There
  166. must be a single \seq command, containing the chords of the song.
  167. Comments can be enclosed in braces { voila }, and can be made visible
  168. on standard output by putting an asterisk immediately after the open
  169. brace {*encore}. This is useful for documenting sequences as they
  170. compile, for example, to introduce the song title and key. This
  171. feature should not be confused with the lyric facility, which prints
  172. lyrics as the chords play (see the "specifying a chord sequence --
  173. basics" section).
  174.  
  175. \irq <n>
  176. ========
  177. Sets the irq number for the MPU (<n> should be a number between 0 and 7).
  178. The default is 2. If this is set wrongly, odd things may happen. Unless
  179. you know your card is set differently, leave it at 2.
  180.  
  181. \tempo <t>
  182. ==========
  183. Sets tempo to <t> beats per minute. Range is 16...240
  184.  
  185. \setbass <c> <t> <v> <p>
  186. ========================
  187. Sets bass line to midi channel <c>, transposed <t> semitones, velocity
  188. (volume) <v> and midi program number <p>. Defaults are 1, 0, 120, *.
  189. (an asterisk * can be used to select the default value for any field,
  190. or for <p> an entry of * causes no midi program change to be sent).
  191. The ranges are c (1..16), t (-48..48), v (0..127), p (0..127).
  192.  
  193. \setchords <c> <t> <v> <p> 
  194. ==========================
  195. The same as \setbass, but functions for the chord section. Defaults
  196. are 2, 0, 100, *.
  197.  
  198. \setperc <name> <c> <n> <v>
  199. ===========================
  200. This command is used to define a named percussion instrument. The name
  201. is a single letter from a to z. The defined instrument is played on
  202. channel <c> with note number <n> and velocity <v>. If v is zero the
  203. instrument makes no sound. Instruments sound when they are called from
  204. a pattern. In the patterns in bass.rc I have assumed that "b" is the
  205. bass drum, "s" is a snare and "h" a high hat cymbal. For this to work
  206. on my Roland D-110 I set it to recieve percussion on channel 9, and
  207. make the following definitions in the "bass.rc" file.
  208.     \setperc b 9 35 120 {bass drum, chan 9, note 35, velocity 120}
  209.     \setperc s 9 38 120 {snare, chan 9, note 38, velocity 120}
  210.     \setperc h 9 42 100 {high hat, chan 9, note 42, velocity 100}
  211. Your synthesiser is most likely different from this. Consult the
  212. manual to find out which sounds are assigned to which note numbers.
  213.  
  214. \swing <p> <t>
  215. ==============
  216. Sets the percentage swing and swing timescale. If t=60 then swing acts
  217. on pairs of quavers (eighth notes), t=120 acts on pairs of crotchets
  218. (quarter notes). A swing of 50% gives a straight beat, 66% gives a
  219. triplet feel, 33% gives a `snap' feel. In general for a pair of notes
  220. of length t ticks, the first takes p% of the total time, and the
  221. second takes (100-p)% of the time. Defaults are p=50, t=120. The
  222. percentage p% can be adjusted during play with the [ and ] keys (but
  223. some notes may be lost).
  224.  
  225. \seq <sequence> 
  226. ===============
  227. Define the sequence of chords in the song. The sequence consists of
  228. a list of chords, with information about which patterns to use (see
  229. below), and how long the chords last. The sequence plays until it runs
  230. out of chords, or interrupted by a keypress. More information on how
  231. to specify the sequence is given below.
  232.  
  233. \pat <n> <d> <definition>
  234. =========================
  235. Define pattern number <n> of duration <d> (cycle time). n ranges from
  236. 0 to 50. A pattern is a series of notes based on the current chord in
  237. a chord sequence. When the sequence is playing, the selected pattern
  238. cycles repeatedly until a new pattern is selected. New chords can
  239. begin part way through a pattern. More information on specifying
  240. patterns is given below. 
  241.  
  242.  
  243.  
  244. =====================================
  245. Specifying a Chord Sequence -- Basics
  246. =====================================
  247. A chord sequence is just a list of chord symbols. In addition, you can
  248. set the time for which a chord plays, the pattern number it uses,
  249. section repeats and lyrics (or cues) which print as the sequence
  250. plays.
  251.  
  252. Normal chords are specified like this:
  253.  
  254.     A Bm CM7 C#o Eb7 FmM7 G+ Am6 B79 C9 ...
  255.  
  256. which represent A major, B minor, C with maj7, C sharp diminished, E
  257. flat major with minor 7, F minor with maj7, G aug, A minor 6, B with
  258. minor 7th and 9th, C with 9th. The complete list of accpetable chords
  259. may be obtained by typing "BASS -c" (from the DOS prompt) or 
  260. "BASS -c > chords" to store them in the file "chords". The list may
  261. change between versions. Tonic names should be in capitals (or else
  262. `b' might be mistaken for a flat) but need not be if you put spaces
  263. in appropriate places (ie between chords).
  264.  
  265. A chord which is just a repetition of the previous chord can be
  266. written as `/'. Note that you must leave space between it and the
  267. previous chord so that it is not confused as a bass note specifier. 
  268.  
  269. A silence (no chord) is written '-' (minus).
  270.  
  271. Chords are given durations by specifying a time. A time can be
  272. specified in whole beats and in fractions of a beat, where fractions
  273. are given in 120ths and preceded by a backquote (`). For example,
  274. `60 is half a beat, 1 is one beat, 1`60 (or `180) is a beat and a
  275. half.
  276.  
  277. If a time is given, it is taken to indicate the duration of the
  278. following chords, until another duration appears. For example, in the
  279. sequence 4 A `60 C D, the A chord lasts 4 beats, and the C and D
  280. chords half a beat each.
  281.  
  282. A pattern is selected by writing p<n> where <n> is the number given
  283. in the definition of the pattern (see below). This affects all
  284. following chords until another pattern is selected. Note that in
  285. general a pattern will not `restart' when the chord changes. To ensure
  286. that a pattern does restart at a particular point, use another pattern
  287. specifier p<n> at that point. For example the sequence p1 A D p3 E
  288. plays chords A and D using pattern number 1, and switches to pattern
  289. number 3 for the E chord.
  290.  
  291. Repeats are specified by enclosing the section to be repeated in
  292. square brackets, for example
  293.  
  294.         [ C G7 C G7 ] {twice}
  295.  
  296. plays the section twice. Different numbers of repeats can be specified
  297. using an integer count, written immediately after the open bracket (no
  298. spaces), thus: [4 C G7 ] {four times}. A section will repeat forever
  299. if you write it with an asterisk [* C G7 ]. In this case, if output
  300. is to a file then the section plays twice. Repeats can be nested.
  301.  
  302. As BASS plays, it prints out the name of the current chord. You can
  303. also make it print out lyrics (or any other text) by placing the text
  304. in double quotes "this is a lyric". The lyric is printed at the same
  305. time as the chord it follows is printed. If the slash (/) character
  306. appears in a lyric, it is printed as a carriage return.
  307.  
  308. Barlines can be included anywhere you like, written as a vertical bar
  309. (|). Barlines are printed as the sequence plays, and are useful for
  310. keeping track of the beat.
  311.  
  312. ==============================================
  313. Specifying a Chord Sequence -- Advanced Topics
  314. ==============================================
  315. (This section can be safely skipped first time through !)
  316.  
  317. BASS permits chords to be played in any octave. A chord can be
  318. transposed a number of octaves by following the note name with a
  319. series of octave shift characters as follows:
  320.  
  321.     '    (single quote)    -- up one octave
  322.     "    (double quote)    -- up two octaves
  323.     ,    (comma)        -- down one octave
  324.  
  325. These symbols may be repeated to increase the shift available.
  326. (Normally, chords are set so that C is the C major chord with middle
  327. C as its root. The other unshifted chords have roots above middle C.)
  328. Thus the minor chord with a root of Gb below middle C can be written
  329. Gb,m (or G,bm but not Gbm,).
  330.  
  331. A bass note can be specified for any chord, eg G#7/E has E in the
  332. bass, rather than the usual G#. If none is specified, the default is
  333. that the tonic is taken to be the bass note. If the bass note occurs
  334. in the chord, the chord is reorganised to reflect this, so that the
  335. bass note appears first in the list of notes (an inversion). You can
  336. prevent inversion on any chord by using \ instead of / before the bass
  337. note. Special chords (as defined below) can be assigned bass notes,
  338. but they are never inverted. Bass notes can also use the octave shift
  339. characters (" ' and ,).
  340.  
  341.  
  342. Specifying new chord types
  343. ==========================
  344.  
  345. Should you need a chord that BASS doesn't know about, the \chord
  346. command lets you replace an existing chord in the chord table. Its
  347. syntax is
  348.         \chord <new> <old> <definition>
  349. where <new> is the type of the new chord, old is the type of the chord
  350. you will replace, and definition is the sequence of notes in the
  351. chord. Both <new> and <old> require the tonic to be specified (and
  352. they must be the same), so the chord can be defined in whichever key
  353. you find most convenient. The chord names s1, s2, s3 have been left
  354. blank specifically so that you can redefine them. The notes themselves
  355. are either note names or integers representing displacement in
  356. semitones from the tonic. For example, to define a sus4 chord (in
  357. place of s1), you could type
  358.  
  359.     \chord Csus4 Cs1 [C F G]
  360. or   \chord Csus4 Cs1 [0 5 7]
  361.  
  362. If you don't like my definition of an existing chord name, just
  363. redefine it using the same name for <new> and <old>, with your new
  364. definition. \chord definitions must come before the new names are used
  365. in a \pat or \seq section. Use "bass -c" to see the list of chords.
  366.  
  367. As well as defining new chords using the \chord command, you can
  368. define once only special chords without giving them names. A special
  369. chord consists of a tonic name, and a list of notes in square
  370. brackets. (You can also specify the notes as displacements from the
  371. tonic in semitones). Thus C[C E G] (or C[0 4 7]) is a normal C major
  372. chord, D[D G A C' E'] (or D[0 5 7 10 14]) would be D7 with a 4th
  373. instead of a 3rd. Special chords do not automatically contain the
  374. tonic (but t is still set to the tonic in the \pat section, see
  375. below). If you find you use the same special chord type several times,
  376. give it a name and declare it using \chord.
  377.  
  378.  
  379.  
  380. ===================
  381. Specifying Patterns
  382. ===================
  383.  
  384. If you are new to bass, you will probably want to try out some chord
  385. sequences using just the standard patterns in the distributed BASS.RC
  386. file. This section is of use only when you decide to build your own
  387. patterns.
  388.  
  389. A pattern is defined by specifying which notes to play when, for how
  390. long, and at what volume. Notes are always specified relative to the
  391. current chord, and may be played on the bass channel or on the chord
  392. channel. 
  393.  
  394. The labels a b c d e f g refer to the 1st, 2nd,.. 7th note of the
  395. chord which is playing. Label t is the tonic or the `name' of the
  396. chord. These notes are played on the chords channel. If the chord has
  397. fewer notes than required, higher notes are obtained by transposing
  398. lower notes by octaves. Thus, in a three note chord, `d' is exactly
  399. one octave higher than `a', and `e' is an octave above `b'. In a four
  400. note chord, `d' is the fourth note of the chord, and `e' is an octave
  401. above `a'. If the current chord has no special bass note, then `a' is
  402. the same as `t'. 
  403.  
  404. The label `x' refers to the bass note, and is played on the bass
  405. channel. It is the same note as `t' (tonic), unless the chord has a
  406. special bass note. If the chord has been inverted then `a' is the same
  407. note as `x'. Normally, the bass note sounds an octave lower than the
  408. tonic. Any of t, a, ... h can be forced on to the bass line by
  409. prefixing with x, as in xa, xt etc.
  410.  
  411. Notes can be transposed by whole octaves using the octave shift
  412. characters (' " ,) as described in the \seq (advanced) section. For
  413. example, a' is an octave above a.
  414.  
  415. Other notes can be obtained by adding or subtracting a displacement
  416. in semitones, as in x+7 (a fifth above the bass note), t-3 (minor
  417. third below the tonic), x'+7 or x+19 (an octave plus a fifth above the
  418. bass note).
  419.  
  420. Times are specified in beats and `120ths as in the sequence section
  421. (`basics'). A time on its own defines the duration of the following
  422. notes. The default is 1 beat.
  423.  
  424. A time following an @ defines the start time of the following notes.
  425. Start times can be negative, to allow an up-beat. This can be
  426. confusing, as it overlaps the previous pattern. Start times do not
  427. have to be input in increasing order, they will be sorted later on.
  428. Notes extending past the end of the current chord are not cut short,
  429. so they might interfere with the next chord. If this happens, define
  430. a special pattern with shorter notes.
  431.  
  432. The letter v followed by a number defines the percent volume (actually
  433. percent midi velocity) at which the following notes sound. Volume
  434. defaults to 100 percent at the start of each pattern cycle, giving the
  435. midi velocity defined in the \setbass and \setchords sections. a
  436. velocity of 0 percent is silence.
  437.  
  438. A circumflex (^) followed by a letter indicates a percussion hit.
  439. Percussion instruments are defined using the \setperc command
  440. described earlier. Thus ^b might indicate a thump on the bass drum.
  441. Percussion instruments are affected by the current start time and
  442. volume settings, but do not have a duration.
  443.  
  444. For example, the following defines pattern number 37 to be an oom-
  445. cha-cha rhythm.
  446.  
  447.     \pat 37 3 { oom cha cha, pattern cycles every 3 beats } 
  448.         v100 @0 2 x ^b { play the bass note for two beats at start,
  449.                       with full volume, and thump the bass drum } 
  450.         v95 @1 1 a b { play tonic and third on 2nd beat }
  451.         @2 a b c a' ^s { huge chord + snare on third beat }
  452.  
  453. Note that if the input were a 7 chord, the 7th would never be played
  454. by this pattern (normally the 7th is in label 'd'). It is a good idea
  455. to keep frequently used patterns in the BASS.RC file, with descrip-
  456. tions(!). 
  457.  
  458. Patterns can contain conditional sections which are only played on
  459. certain types of chord, and random conditionals to add variety to a
  460. single pattern. The basic structure of a conditional is one of the
  461. following, where `c' represents a condition, and `p' a pattern
  462. definition. 
  463.  
  464. <  (c1) p1  >        do p1 only if c1 is true.
  465. <  (c1) p1 ~ p2 >    do p1 if c1 is true, otherwise p2.
  466. <  (c1) p1 ~ (c2) p2 >    do p1 if c1 is true, otherwise do p2 if c2
  467.                          is true, otherwise do nothing.
  468. <  (c1) p1 ~ (c2) p2 ~ (c3) p3 ~ .... >    
  469.                     you should have the idea by now.
  470.  
  471. The p sections can contain any of the things that can occur in a
  472. pattern definition, including nested conditionals.
  473.  
  474. Conditionals consist of one or more of clauses, separated by a
  475. vertical bar (|). The clauses are tested in order, and if any are
  476. true, the condition succeeds.
  477.  
  478. Clauses are built out of the following sorts of test.
  479.  
  480.   z    z tests for a certain type of chord. So z6b9 matches any 6b9
  481.      chord, z (followed by a space) matches a normal major chord etc.
  482.      z[] will match any special chord.
  483.  
  484.   #    # tests match chords with particular numbers of notes. #>3
  485.      matches a chord with more than 3 notes, #<3 with fewer than 3
  486.      notes, #=3 (or just #3) with exactly 3 notes. 
  487.  
  488.   p    p followed by an integer is a probability test. p50 succeeds with
  489.      a probability of 50% (that is, one half). There can be only one
  490.      p test in a single clause.
  491.  
  492. If there is more than one test of a single type, the test succeeds if
  493. any of them match. If there are tests of different types, the clause
  494. succeeds if at least one of each type succeeds.
  495.  
  496. For example, the clause  p50z[]#>4#=1 succeeds on any special chord
  497. with more than 4 or exactly 1 note, with probability one half.
  498.  
  499. =======
  500. Example
  501. =======
  502.  
  503. As an example of a simple pattern, here is a verison of St. Louis
  504. Blues:
  505.     {*St. Louis Blues in F major, 4/4}
  506.     \pat 0 2 { bass+swing quavers }
  507.         1 @0 x a b c d
  508.         `60 @1 a b c d
  509.         `30 @1`90 a b c d
  510.     \pat 1 1 { single crash, cut short }
  511.         1 @0 x a b c d
  512.     \tempo 100
  513.     \seq [* {repeat forever}
  514.      "section A/" p0 4 F B-7 F F7 B-7 / F / C7 / F 120 p1 F C7 F C7 
  515.      "section B/" p0 4 Fm / C7 / / / Fm / / / C7 / / / 2 Fm G7 C7 / 
  516.      "section C/" p0 4 F / / F7 B-7 / F / C7 / 240 F C7 1 p1 F - -
  517.      ]
  518.  
  519.  
  520. Future Ideas:
  521. =============
  522.     @) Other sorts of sync -- probably midi-sync
  523.     @) More run-time control
  524.     @) More looping constructs
  525.     @) leadin
  526.     @) better screen output
  527.     @) more pattern programming features, nicer syntax
  528.     @) more standard patterns
  529.     @) recoding critical sections in assembler
  530.     ...
  531.     (If you have some more ideas, I should be pleased to hear from
  532.      you, but don't expect miracles because BASS is a spare time
  533.      activity)
  534.  
  535. Bugs:
  536. =====
  537.     @) Sometimes notes are left sounding on exit.
  538.     @) Identical overlapping notes lead to anomolies.
  539.     @) Swingtime is a hack
  540.     @) On slower computers, BASS may freeze up if too much data is
  541.      being processed at once. The problem can be alleviated by setting
  542.      the swing percentage to exactly 50%, although of course you lose
  543.      the swing effect. I may solve the problem in the future by
  544.      recoding some of the critical parts in assembler, but don't hold
  545.      your breath.
  546.  
  547. Changes since Version 1.0:
  548. ==========================
  549.     @) rewritten, improved parser, better error detection
  550.     @) conditional & randomised pattern constructs
  551.     @) support for lyrics, cues and chord name printout
  552.     @) user definable chords
  553.     @) chord table display
  554.     @) removed pattern visualiser (no longer appropriate for the more
  555.      complex pattern structure)
  556.     @) mechanism for forcing any note onto the bass line
  557. since V2.0:
  558.     @) fixed chord name bug for chords with bass notes
  559.     @) enharmonic notes distinguished
  560.     @) added instant swing feel
  561.     @) velocity control
  562.     @) added humaniser
  563.     @) ctrl-break and dos fatal error handlers
  564.     @) midi file support added
  565.     @) percussion added
  566.     @) daft IRQ restriction removed
  567. ====================================================================
  568.  
  569.